Skip to content

ansible: update benchmark/v8 roles for Ubuntu 24.04#4278

Draft
richardlau wants to merge 2 commits intonodejs:mainfrom
richardlau:benchmark-ubuntu2404
Draft

ansible: update benchmark/v8 roles for Ubuntu 24.04#4278
richardlau wants to merge 2 commits intonodejs:mainfrom
richardlau:benchmark-ubuntu2404

Conversation

@richardlau
Copy link
Member

@richardlau richardlau commented Mar 18, 2026

Add role dependencies to the benchmarking role to ensure the user is created and github.com keys are present.

Add V8 build dependencies for Ubuntu 24.04.


Deployment

Add role dependencies to the `benchmarking` role to ensure the user
is created and github.com keys are present.

Add V8 build dependencies for Ubuntu 24.04.
@richardlau richardlau marked this pull request as draft March 18, 2026 18:16
@richardlau
Copy link
Member Author

Needs more work.

https://ci.nodejs.org/job/richardlau-node-test-commit-v8-linux/770/nodes=benchmark-ubuntu2404-intel-64,v8test=v8test/console is failing with

18:30:28 Failed to fetch file gs://v8-wasm-spec-tests/daf4c75430122590992650885be9ee4e87692c5b for test/wasm-spec-tests/tests.tar.gz. [Err: Traceback (most recent call last):
18:30:28   File "/home/iojs/build/workspace/richardlau-node-test-commit-v8-linux/deps/v8/third_party/depot_tools/external_bin/gsutil/gsutil_4.68/gsutil/gsutil", line 21, in <module>
18:30:28     gsutil.RunMain()
18:30:28   File "/home/iojs/build/workspace/richardlau-node-test-commit-v8-linux/deps/v8/third_party/depot_tools/external_bin/gsutil/gsutil_4.68/gsutil/gsutil.py", line 121, in RunMain
18:30:28     import gslib.__main__
18:30:28   File "/home/iojs/build/workspace/richardlau-node-test-commit-v8-linux/deps/v8/third_party/depot_tools/external_bin/gsutil/gsutil_4.68/gsutil/gslib/__main__.py", line 36, in <module>
18:30:28     from six.moves import configparser
18:30:28 ModuleNotFoundError: No module named 'six.moves'
18:30:28 ]

which was seen in #4079 (comment) with Python 3.12 and solved by dropping down to Python 3.11.

@richardlau
Copy link
Member Author

Refs: https://issues.chromium.org/issues/40283283#comment49

FWIW depot_tools commit sha is in https://github.com/nodejs/node/blob/f68824a6805a82bd017004443430cf40c3efaf19/deps/v8/DEPS#L248-L249 and earlier than the gsutils update.

As a data point I'm running https://ci.nodejs.org/job/richardlau-node-test-commit-v8-linux/771/nodes=benchmark-ubuntu2404-intel-64,v8test=v8test/ for nodejs/node#61898 and that appears to be working (or at least building).

We have got a problem though -- the default Python 3 on Ubuntu 24.04 is 3.12 and there does not appear to be a package for 3.11 so we cannot use an earlier version. And we still need to be able to run the V8 CI on e.g. Node.js 22 and 24.

@richardlau
Copy link
Member Author

As a data point I'm running https://ci.nodejs.org/job/richardlau-node-test-commit-v8-linux/771/nodes=benchmark-ubuntu2404-intel-64,v8test=v8test/ for nodejs/node#61898 and that appears to be working (or at least building).

FTR this got as far as nodejs/node#61898 (comment) (that comment mentions GCC < 14 but we're using clang19 here and seeing the same issue).

@richardlau
Copy link
Member Author

Overriding depot_tools on Node.js 22 with the one from the V8 14.6 update PR allows the CI to pass: https://ci.nodejs.org/job/richardlau-node-test-commit-v8-linux/776/nodes=benchmark-ubuntu2404-intel-64,v8test=v8test/
with

diff --git a/tools/v8/fetch_deps.py b/tools/v8/fetch_deps.py
index 728e48eb14e..185972a90fd 100755
--- a/tools/v8/fetch_deps.py
+++ b/tools/v8/fetch_deps.py
@@ -24,6 +24,7 @@ GCLIENT_SOLUTION = [
     "deps_file"   : "DEPS",
     "managed"     : False,
     "custom_deps" : {
+      "v8/third_party/depot_tools"            : "https://chromium.googlesource.com/chromium/tools/depot_tools.git@284c5ccb591c3de4e9f71be4a4beb5d1916d5383",
       # These deps are already part of Node.js.
       "v8/base/trace_event/common"            : None,
       "v8/third_party/abseil-cpp"             : None,

we could alternatively directly modify deps/v8/DEPS. Either option would require us to land patches on v25.x/v24.x/v22.x/v20.x branches (although Node.js 20 will be End-of-Life soon). I guess we could also make the Jenkins job patch the dependency, but I feel like that would be less transparent, and we would need to ensure we do not patch unnecessarily (e.g. we should not be patching for newer V8 versions).

@nodejs/v8-update @nodejs/releasers Any thoughts/preferences?
tl;dr We now have Python version constraints with the V8 CI:

  • The bootstrap depot_tools now requires Python 3.11 or later.
  • The version of depot_tools used by the V8 build (bootstrapped by the above) in deps/V8/DEPS doesn't work with Python 3.12 for all versions of V8 in the in-support Node.js release lines.
  • Ubuntu 24.04 defaults to Python 3.12, with no easy way to use an earlier version.

I don't remember if moving from Ubuntu 22.04 to 24.04 was toolchain related (@targos ?) which would make it impractical to stay on Ubuntu 22.04 (note that Python 3.11 there is a rc version).

@targos
Copy link
Member

targos commented Mar 19, 2026

I don't remember if moving from #4144 was toolchain related

Yes, it was to get access to Clang 19+

@richardlau
Copy link
Member Author

I don't remember if moving from #4144 was toolchain related

Yes, it was to get access to Clang 19+

Right, in which case staying on Ubuntu 22.04 is out of the question.

@targos Do you have thoughts on overriding (either DEPS or fetch_deps.py) depot_tools in either the checked in source code (all release lines) or directly in the Jenkins job? (Or have other suggestions to try?)

@ryanaslett was asking if the machine has to be Ubuntu, and I don't think it does, but would be more work to transition to something else (RHEL?).

@targos
Copy link
Member

targos commented Mar 19, 2026

Do you have thoughts on overriding (either DEPS or fetch_deps.py) depot_tools

That sounds good to me. As long as it works, I would take the easiest to maintain route

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants